package com.dalin.system.controller;

import com.dalin.framework.BaseController;
import com.dalin.framework.util.StringUtil;
import com.dalin.framework.vos.ResResult;
import com.dalin.system.pojo.entity.${entityName}Entity;
import com.dalin.system.pojo.request.${entityName}Request;
import com.dalin.system.service.${entityName}Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/******************************************************************************
 * @Desc    : 提供${tableComment}管理相关的API接口。
 * @author  : 那建林
 * @date    : ${createDate}
 * @version : 1.0
 *****************************************************************************/
@RestController
@RequestMapping("/api/${lowerEntityName}")
@CrossOrigin(origins = "*")
public class ${entityName}Controller extends BaseController {
    @Autowired
    private ${entityName}Service ${lowerEntityName}Service;

    /**************************************************************************
     * 分页查询${tableComment}信息。
     *
     * @param req 请求参数对象，包含分页及筛选条件等。
     * @return 返回包含分页数据的结果对象。
     * @throws Exception 抛出异常。
     * @author 那建林
     * @date ${createDate}
     */
    @PostMapping("/listPage")
    public ResResult listPage(@RequestBody ${entityName}Request req) throws Exception {
        log.info("分页查询信息 by params===");
        StringUtil.printValues(req);
        return ${lowerEntityName}Service.listPage${entityName}s(req);
    }

    /**************************************************************************
     * 根据ID删除${tableComment}信息。
     *
     * @param id 要删除的数据的主键ID。
     * @return 如果删除成功则返回"success"。
     * @author 那建林
     * @date ${createDate}
     */
    @DeleteMapping("/delete/{id}")
    public String delete${entityName}(@PathVariable Long id) {
        System.out.println("根据ID删除${tableComment}信息 by id==="+ id);
        ${lowerEntityName}Service.delete${entityName}(id);
        return "success";
    }

    /**************************************************************************
     * 批量删除数据库管理信息。
     *
     * @param ids 要删除的数据的主键ID列表。
     * @return 如果删除成功则返回"success"。
     * @author 那建林
     * @date ${createDate}
     */
    @PostMapping("/deleteByIds")
    public String delete${entityName}sByIds(@RequestBody List<String> ids) {
        ${lowerEntityName}Service.delete${entityName}s(ids);
        return "success";
    }

    /**************************************************************************
     * 添加或更新${tableComment}信息。
     * @param ${lowerEntityName} 实体对象，包含要添加或更新的信息。
     * @return 操作成功后返回"success"。
     * @throws Exception 如果操作过程中出现异常，则抛出。
     * @author 那建林
     * @date ${createDate}
     */
    @PostMapping("/addOrUpdate")
    public String addOrUpdate${entityName}(@RequestBody ${entityName}Entity ${lowerEntityName}) throws Exception {
        StringUtil.printValues(${lowerEntityName});
        ${lowerEntityName}Service.addOrUpdate${entityName}(${lowerEntityName});
        return "success";
    }
}